package org.hank.compose_yyzs.db

import android.content.Context
import androidx.room.Room
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn
import dagger.hilt.android.components.ActivityComponent
import dagger.hilt.android.qualifiers.ApplicationContext
import dagger.hilt.components.SingletonComponent
import org.hank.compose_yyzs.MyApp
import org.hank.compose_yyzs.db.dao.FileDao
import org.hank.compose_yyzs.db.dao.ProjectDao
import org.hank.compose_yyzs.db.dao.WifiDao
import javax.inject.Singleton

//  ┏┓　　　┏┓
//┏┛┻━━━┛┻┓
//┃　　　　　　　┃
//┃　　　━　　　┃
//┃　┳┛　┗┳　┃
//┃　　　　　　　┃
//┃　　　┻　　　┃
//┃　　　　　　　┃
//┗━┓　　　┏━┛
//    ┃　　　┃                  神兽保佑
//    ┃　　　┃                  永无BUG！
//    ┃　　　┗━━━┓
//    ┃　　　　　　　┣┓
//    ┃　　　　　　　┏┛
//    ┗┓┓┏━┳┓┏┛
//      ┃┫┫　┃┫┫
//      ┗┻┛　┗┻┛
/**
 *@auth: Hank
 *邮箱: cs16xiaoc1@163.com
 *创建时间: 2023/8/11 10:36
 *描述:
 */
@Module
@InstallIn(SingletonComponent::class)
object RoomModule {
    @Provides
    @Singleton
    fun getWifiDao(): WifiDao {
        return getRoomInstance().wifiDao()
    }

    @Provides
    @Singleton
    fun getFileDao(): FileDao {
        return getRoomInstance().fileDao()
    }

    @Provides
    @Singleton
    fun getProjectDao(): ProjectDao {
        return getRoomInstance().projectDao()
    }


    @Provides
    @Singleton
    fun getRoomInstance(): MyDatabase {
        return Room.databaseBuilder(
            MyApp.context,
            MyDatabase::class.java,
            MyDatabase.DATABASE_NAME
        ).fallbackToDestructiveMigration()
            .build()
    }
}